#ifndef GPIO_UART_H
#define GPIO_UART_H
#include <stdio.h>
#include <stdint.h>

// 定义 GPIO 模拟串口的抽象接口
typedef struct
{
    void (*init_tx)(void);                      // 初始化 TX 引脚
    void (*init_rx)(void);                      // 初始化 RX 引脚
    void (*set_tx_high)(void);                  // 将 TX 引脚设置为高电平
    void (*set_tx_low)(void);                   // 将 TX 引脚设置为低电平
    uint8_t (*read_rx)(void);                   // 读取 RX 引脚状态（返回 0 或 1）
    void (*delay_us)(uint32_t delay);           // 延时函数（微秒级）
} GPIO_UART_Interface;

// 定义波特率
#define BAUD_RATE 9600
#define BIT_DELAY_US (1000000 / BAUD_RATE) // 每个位的持续时间（微秒）

// 函数声明
extern void GPIO_UART_Init(GPIO_UART_Interface *interface);      // 初始化 GPIO 模拟串口
extern void GPIO_UART_SendByte(uint8_t byte);                    // 模拟串口发送 1 个字节
extern void GPIO_UART_SendString(const char *str);               // 模拟串口发送字符串
extern uint8_t GPIO_UART_ReceiveByte(void);                      // 模拟串口接收 1 个字节

#endif // GPIO_UART_H
